namespace FFF.Test.Application.AppServices.Demo
{
    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    using FFF.Test.Application.AppServices;
    using FFF.Test.Application.PublicService.AppService.TreeGrid;
    using FFF.Test.Application.Repositories.Demo;
    using FFF.Test.Entity.Demo;
    using FFF.Test.Entity.Demo.Dto;
    using FFF.Test.Entity.Demo.View;

    /// <summary>
    /// 学生表应用层服务接口
    /// </summary>
    public interface IDemoStudent2AppService :
        IYdmAbpCurdAppService<DemoStudent2Entity, Guid, DemoStudent2CreateInputDto, DemoStudent2UpdateInputDto, DemoStudent2Dto, ViewDemoStudent2, ViewDemoStudent2>
    {
        /// <summary>
        /// 1._7_024批量同步(fff,商户平台)
        /// </summary>
        /// <param name="inDto">批量同步输入dto</param>
        /// <returns>批量同步输出dto</returns>
        Task<BatchSyncAsyncOutDto> BatchSyncAsync(BatchSyncAsyncInDto inDto);

        /// <summary>
        /// 分组等级查询
        /// </summary>
        /// <param name="indto">The indto.</param>
        /// <returns>返回分组统计结果</returns>
        /// <remarks>ydm 2021-08-12</remarks>
        Task<List<GetStuGroupGradeOutDto>> GetStuDtoGroupByGradeAsync(GetStuGroupGradeInDto indto);

        /// <summary>
        /// 根据年龄和性别进行查询
        /// </summary>
        /// <param name="indto">The indto.</param>
        /// <returns>学生dto</returns>
        /// <remarks>ydm 2021-08-12</remarks>
        Task<GetStuDtoByAgeAndSexOutDto> GetStuDtoByAgeAndSexAsync(GetStuDtoByAgeAndSexInDto indto);

        /// <summary>
        /// 批量更新
        /// </summary>
        /// <param name="studentAge">学生年龄</param>
        /// <returns>是否成功</returns>
        /// <remarks>ydm 2021-08-12</remarks>
        Task<bool> BatchUpdateAsync(int studentAge);

        /// <summary>
        /// 批量插入
        /// </summary>
        /// <param name="student2Entitys">The student2 entitys.</param>
        /// <returns>是否成功</returns>
        /// <remarks>ydm 2021-08-12</remarks>
        Task<bool> BatchInsertAsync(List<DemoStudent2Entity> student2Entitys);
    }
}
